#ifndef __TimeoutEventBase_h__
#define __TimeoutEventBase_h__

namespace Greatewall
{
    namespace Interface
    {
        class TimerEventBase
        {
        public:
            virtual bool
            start() = 0;

            virtual bool
            stop() = 0;

            virtual void
            triggered() = 0;

            virtual bool
            periodic() = 0;

            virtual long
            id() = 0;

            virtual long
            cmpKey1() const = 0;

            virtual long
            cmpKey2() const = 0;

            virtual long
            cmpKey3() const = 0;
        };

        class TimerEventManagerBase
        {
        public:
            virtual long
            getTimerEventId() = 0;

            virtual void
            checkTimerEvents() = 0;

            virtual bool
            registerTimerEvent(TimerEventBase* event, bool update = true) = 0;

            virtual bool
            unregisterTimerEvent(TimerEventBase* event) = 0;

            virtual char*
            getTimeStamp() = 0;

            virtual long
            getNumberOfEvents() = 0;
        };
    }
}

#endif
